perm filename TEST.SAI[C,BGB] blob
sn#101489 filedate 1974-05-09 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00004 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 BEGIN "TEST"
C00004 00003 SUBR AVERAGE
C00005 00004 α MAIN EXECUTION
C00006 ENDMK
C⊗;
BEGIN "TEST"
REQUIRE "ABBREV[SYS,BGB]" SOURCE_FILE;
SAFE INTEGER ARRAY HEADER[0:127];
SAFE INTEGER ARRAY TVBUF[0:10367];
SAFE REAL ARRAY BUF[-2*288:62208+2*288-1];
SUBR INVIDEO;
BEGIN "INVIDEO"
OPEN(1,"DSK",8,3,0,0,0,0);
LOOKUP(1,"A2.TMP[DAT,BGB]",0);
ARRYIN(1,HEADER[0],128);
ARRYIN(1,TVBUF[0],10368);
RELEASE(1);OUTSTR("INPUT EOF"&↓);
END "INVIDEO";
SUBR OUTVIDEO;
BEGIN "OUTVIDEO"
OPEN(1,"DSK",8,0,3,0,0,0);
ENTER(1,"TMP3.TMP[DAT,BGB]",0);
ARRYOUT(1,HEADER[0],128);
ARRYOUT(1,TVBUF[0],10368);
RELEASE(1);OUTSTR("OUTPUT EOF"&↓);
END "OUTVIDEO";
SUBR UNPACK;
BEGIN "UNPACK"
ITG I,PTR;
PTR ← POINT(6,TVBUF[0],-1);
FOR I←0 THRU 62207 DO BUF[I]←ILDB(PTR);
OUTSTR("TVBUF UNPACKED."&↓);
END "UNPACK";
SUBR AVERAGE;
BEGIN "AVERAGE"
ITG R,C,U,V,PTR,J,CNT;
REAL SUM,X,Y;
PTR ← POINT(6,TVBUF[0],-1);
FOR R←0 THRU 215 DO
BEGIN
FOR C←0 THRU 287 DO
BEGIN
SUM ← 0;
CNT ← 0;
X ← BUF[R*288+C];
FOR U← -2 THRU +2 DO
FOR V← -2 THRU +2 DO
BEGIN
Y ← BUF[(R+U)*288 + (C+V)];
IF ABS(X-Y)≤15 THEN ⊂ SUM←SUM+Y;CNT←CNT+1;⊃;
END;
IF CNT≤5 THEN
⊂ SUM ← 0;CNT ← 8;
FOR U← -1,0,+1 DO
FOR V← -1,0,+1 DO IF (U OR V) THEN
SUM ← SUM+BUF[(R+U)*288 + (C+V)];
⊃;
J ← SUM/CNT;
IDPB(J,PTR);
END;
OUTSTR(CVS(R)&" ");
IF INCHRS≥0 THEN RETURN;
END;
END "AVERAGE";
α MAIN EXECUTION;
INVIDEO;
UNPACK;
AVERAGE;
OUTVIDEO;
END "TEST";